package object;

/**
 *测试重写Object的toString方法与equals方法
 */
public class Demo {
    public static void main(String[] args) {
        Point p=new Point(1,2);
        /*
        String toString()方法时object定义的方法
        该方法的作用是将当前对象转换为一个字符串。Object的默认实现中该方法返回的是这个对象的地址信息，格式为：类名@地址
         */
        String str=p.toString();
        System.out.println(str);
        //像控制台输出p对象
        /*
           System.out.println(Object o)
           向控制台输出一个对象时，该方法会输出对象toString方法返回的字符串

        */

        System.out.println(p);

        /*
        在进行字符串拼接时，会将非字符串的对象内容转换为字符串，此时会调用起toString方法并将其转换为字符串
        */
        String line = "对象内容："+p;
        System.out.println(line);

        /*
        Object定义的另一个常被子类重写的方法：equals
        该方法的作用是判断两个同类型的实例之间的内容是否相同
         */
        Point p2 = new Point(1,2);
        /*
          ==为值比较，啊比较两个变量的值是否相同
          对于引用类型变量而言，保存的是地址，因此++可以理解为两个对象的地址是否i相同，这就意味着比较的是他们是否为同一个对象
         */
        System.out.println(p == p2);
        /*
            equals方法并不关心两个对象是否为同一个对象，而是应当关心两个对象的内容是否相同。
            Object定义的该方法内部使用”==“实现，因此我们世界应用时应当重写该方法否则没有实际意义。
         */
        System.out.println(p.equals(p2));


    }
}
